module.exports = {
  presets: [
    // stage 已经删除 现在所有预设已经更改为@开头
    [
      '@babel/preset-env', // 只有esmodules才能触发treesharking  默认模块auto - esmodules ，commonjs,
      {
        // "amd" | "umd" | "systemjs" | "commonjs" | "cjs" | "auto" | false, defaults to "auto".
        modules: false,
        useBuiltIns: 'usage', //使用abel/polyfill 或者在webpack入口处配置 在文件需要的位置单独按需引入，可以保证在每个bundler中只引入一份。例如 entry会将所有的polyfill 都引入会很大
        corejs: 2
      }
    ]
  ],
  plugins: ['@babel/plugin-transform-runtime']
  // https://www.zhihu.com/search?type=content&q=transform-object-rest-spread
  // transform-runtime 解决了babel在每个文件都插入了辅助代码，代码体积过大的问题。作用是将 helper 和 polyfill 都改为从一个统一的地方引入，并且引入的对象和全局变量是完全隔离的
  // transform-object-rest-spread：为对象字面量添加解构赋值和spread属性,编译对象的解构赋值和不定参数
  // transform-async-generator-functions // 将async generator function和for await编译为es2015的generator。
  // transform-class-properties // 编译静态属性(es2015)和属性初始化语法声明的属性(es2016)
}
